package com.atguigu.redis7.filter;

import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

/**
 * @版本： V5.1.0
 * @版权： Copyright @ 2025 广东广昱信息科技有限公司版权所有
 * @作者： 广东广昱信息科技有限公司
 * @日期： 2025-07-13 18:24
 */
@Component
@Slf4j
public class BloomFilterInit {
    @Resource
    private RedisTemplate redisTemplate;

    @PostConstruct//初始化白名单数据
    public void init(){
        //1白名单客户加载到布隆过滤器
        String key = "customer:12";
        //2.计算hashValue,由于存在计算出来负数的可能，我们取绝对值
        int hashValue = Math.abs(key.hashCode());
        //3.通过hashValue和2的32次方后取余。极品的对应的下标坑位
        long index = (long)(hashValue % Math.pow(2,32));
        log.info(key+"对应的坑位index:{}",index);
        //4.设置redis里面的bitmap对应类型的坑位，将该值设置为1
        redisTemplate.opsForValue().setBit("whitelistCustomer",index,true);
    }
}
